package JianZhiOffer;

import java.util.Arrays;

public class intersect {

    /**
     * 1.排序+双指针
     *
     * @param nums1
     * @param nums2
     * @return
     */
    public int[] intersect(int[] nums1, int[] nums2) {
        // 排序，为啥排序？
        Arrays.sort(nums1);
        Arrays.sort(nums2);

        // 双指针遍历
        int length1 = nums1.length;
        int length2 = nums2.length;
        // 较小长度数组
        int[] intersection = new int[Math.min(length1, length2)];
        int index1 = 0, index2 = 0, index = 0;
        //
        while (index1 < length1 && index2 < length2) {
            // 小的递增遍历
            if (nums1[index1] < nums2[index2]) {
                index1++;
            } else if (nums1[index1] > nums2[index2]) {
                index2++;
            } else {
                // 赋值新数组，同时双指针移动
                intersection[index] = nums1[index1];
                index1++;
                index2++;
                index++;
            }
        }
        // 复制出一个左闭右开区间的数组
        return Arrays.copyOfRange(intersection, 0, index);
    }

    public static void main(String[] args) {

    }
}
